/*
 * socketudp.cpp
 *
 *  Created on: 22/05/2011
 *      Author: wadi
 */

#include "socketudp.h"

SocketUdp::SocketUdp() {
}

SocketUdp::SocketUdp(std::string ip,int puerto) {
}

SocketUdp::~SocketUdp() {
}

bool SocketUdp::open() {
    socketId = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    return (socketId >= 0);
}

int SocketUdp::recibir(unsigned char * buffer, int cantidad) {
    int caracteresLeidos = recv(socketId, buffer, cantidad, 0);
    // Se cerro la conexión donde estaba recibiendo o tiro algún error
    if(caracteresLeidos<=0)
        closed=true;
    return caracteresLeidos;
}

int SocketUdp::escribir(char * buffer, int cantidad) {
    int enviadosTotales=0;
    int enviados=0;
    while(enviadosTotales<cantidad){
    enviados=write(socketId, buffer+enviados, cantidad-enviadosTotales);
    if(enviados<0)
        return -1;
    enviadosTotales+=enviados;
    }
    return enviadosTotales;
}
